package com.laikan.reader.core.utils;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.webkit.WebSettings;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView;

import java.io.File;

public class ActivityUitl extends Activity {

    private static final String APP_CACAHE_DIRNAME = "/webcache";

    /**
     * 检查当前网络是否可用
     *
     * @param context
     *
     * @return
     */

    public static boolean isNetworkAvailable(Context context) {
        // 获取手机所有连接管理对象（包括对wi-fi,net等连接的管理）
        ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        if (connectivityManager == null) {
            return false;
        }else {
            // 获取NetworkInfo对象
            NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();

            if (networkInfo != null && networkInfo.length > 0) {
                for (int i = 0; i < networkInfo.length; i++) {
                    // 判断当前网络状态是否为连接状态
                    if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    @SuppressWarnings ("unused")
    private void initWebView(WebView view, String url, boolean isLoc) {

        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().setRenderPriority(RenderPriority.HIGH);
        //判断是否有网络，有的话，使用LOAD_DEFAULT，无网络时，使用LOAD_CACHE_ELSE_NETWORK。
        if (!isLoc && isNetworkAvailable(this)) {
            view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);  //设置 缓存模式
        }else {
            view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  //设置 缓存模式
        }

        // 开启 DOM storage API 功能
        view.getSettings().setDomStorageEnabled(true);
        //开启 database storage API 功能 
        view.getSettings().setDatabaseEnabled(true);

        //view.getSettings().setLoadWithOverviewMode(true);
        //view.getSettings().setUseWideViewPort(true);

        String cacheDirPath = getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;
        //      String cacheDirPath = getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME;
        //设置数据库缓存路径 
        view.getSettings().setDatabasePath(cacheDirPath);
        //设置  Application Caches 缓存目录 
        view.getSettings().setAppCachePath(cacheDirPath);
        //开启 Application Caches 功能 
        view.getSettings().setAppCacheEnabled(true);

        //view.setBackgroundColor(0); 
        view.setDrawingCacheEnabled(false);

        view.loadUrl(url);
    }

    /**
     * 清除WebView缓存
     */
    public void clearWebViewCache() {

        //清理Webview缓存数据库 
        try {
            deleteDatabase("webview.db");
            deleteDatabase("webviewCache.db");
        }catch (Exception e) {
            e.printStackTrace();
        }

        //WebView 缓存文件 
        File appCacheDir = new File(getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME);

        File webviewCacheDir = new File(getCacheDir().getAbsolutePath() + "/webviewCache");

        //删除webview 缓存目录 
        if (webviewCacheDir.exists()) {
            deleteFile(webviewCacheDir);
        }
        //删除webview 缓存 缓存目录 
        if (appCacheDir.exists()) {
            deleteFile(appCacheDir);
        }
    }

    /**
     * 递归删除 文件/文件夹
     *
     * @param file
     */
    public void deleteFile(File file) {

        if (file.exists()) {
            if (file.isFile()) {
                file.delete();
            }else if (file.isDirectory()) {
                File files[] = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    deleteFile(files[i]);
                }
            }
            file.delete();
        }else {
        }
    }
}
